Connectivity to computer networks, and more particularly to the Internet, has revolutionized the manner in which software is updated on a computer system. Prior to the near-universal connectivity to networks and the Internet, when a software update became necessary and available, a software provider would package the update on computer readable media, and the computer owner had to obtain a copy of the media to complete the update. However, distributing software updates on computer readable media was typically very expensive for software providers, especially for those software applications that were widely used. This cost tended to restrict the number of software updates that a software provider would issue. As a consequence, substantial time passed between updates, and consumers had to “deal” with known issues for these time periods, at least until an update became available. Another aspect of this older method was that many modifications were packaged into a single update to reduce the costs associated with distributing the update.
As mentioned above, network connectivity has changed this scenario. Now, software updates are typically made available on one or more download sites just as soon as the software provider can produce them. Indeed, in this manner, software providers can be much more responsive to critical flaws, security concerns, and general customer needs. Thus, to remain current, a customer simply queries an update site for software updates, and downloads and installs software updates if they are available. (Of course, most software applications provide the customer with substantial control over the download/installation process, including which software updates to install.) Another benefit is that updates have become more focused, i.e., a software update may address only a single item, and customers can pick and choose which update items are necessary for them to install.
FIG. 1 is a pictorial diagram illustrating a typical, simplified exchange between a client computer and an update source when obtaining software updates over a network, as is currently practiced in the industry. As indicated by query 108, a client computer 102 issues a query over a network 106 to a software provider's download site, referred to hereafter as an update source 104, to determine whether any software updates are available for the client computer. In query response 110, the update source 104 responds to the client computer 102 with update information indicating which, if any, software updates are available.
When there are available updates, the client computer 102 issues an update request 112 to the update source 104 for the software updates applicable to the client computer. The update source 104 responds 114 to the client computer 102 with the software updates requested by the client computer in the update request 112. After the client computer 102 has received the software updates, the client computer 102 installs the received updates, as indicated by arrow 116.
Naturally, one of the benefits of updating software over a network connection is that the cost associated with producing and distributing software updates is almost entirely eliminated. Additionally, software updates now occur more frequently, especially those addressing critical issues and security. Still further, a computer user has greater control as to when and which software updates should be installed on the client computer.
Unfortunately, as those skilled in the art will appreciate, a client computer, such as client computer 102, cannot always be connected to, or have access to, an update server 104. This lack of connectivity may arise because the network 105 is temporarily unavailable, or because of security concerns that dictate that the client computer is not able to access external sites, or that external sites are not able to transmit information to the client computer. In such cases, because software applications are designed to be updated over a network, the current system for updating software applications becomes broken. The typical solution is to revert to previous update techniques: i.e., provide software updates on computer readable media. But this has meant that the software application (and software provider) must support two methods for updating the application. This is undesirable.
In addition to simply updating a software application, its often desirable, for a variety of reasons, to determine whether the version a software application on a client computer 102 is the latest available from the software provider. Online connectivity has been a great boon to this facet of software updates, i.e., determining whether the version of a software application on a client computer 102 is the latest version available. Relatively small communication exchanges between the client computer 102 and the update source 104 over the network 106 are used to determine whether the latest version is installed, and if not, to determine what software update is needed to upgrade the software application to the latest version. These communications are small because the actual updates, i.e., the update payloads that effectuate the update on the client computer 102, are not exchanged.
In an offline situation, i.e., when network connectivity is unavailable or prohibited, providing software updates on computer-readable media is not a desirable solution when the user simply wants to determine whether the version of the software application running on the client computer 102 is the latest version available. However, at least one solution has been set forth to address this situation.
HFNetChkPro, by Shavlik Technologies, is a program that can be used to analyze a software application and determine whether that software application is the latest revision. It performs this analysis using a patch file that identifies the latest revisions, and possibly includes intermediate steps to fully realize the latest revisions. Using the patch file, the HFNetChkPro identifies whether the software application is up-to-date, and in some cases, is further able to instigate an update process. However, this solution is not without its own set of problems. First, the HFNetChkPro system does not address what happens when the computing device 102 cannot communicate with the update source 104. In other words, even though the HFNetChkPro system identifies that later revisions are available, if the communication channels are closed, no update can occur. Second, the HFNetChkPro system, being a separate product from the update process on the client computer 102, uses a different file than the update process. As such, discrepancies between what the HFNetChkPro system believes as the latest revisions and what the update process views as the latest revisions may vary substantially.
What is needed is a system and method that enables a software application to perform software updates in a consistent manner, irrespective of whether the update information is available over a network connection or on computer readable media. Indeed, what is needed is an efficient system for delivering software updates and attendant update information to a client computer 102 in an efficient format that enables the update process on the client computer to use the same update files and operate in the same manner is if it were communicating with the update source 104 over a communication network 106. The present invention addresses these issues, as well as other issues found in the prior art.